/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package GameServer;

import Library.Game.*;
import java.util.*;

/**
 * Een continent heeft een naam en bevat een aantal landen die al dan niet bezet zijn.
 * Een continent kan in de toekomst leiden tot extra legers.
 */
public class Continent
{
    /**
     *
     */
    protected String m_Name;
    /**
     *
     */
    protected int m_BonusValue;
    /**
     *
     */
    protected int m_Id;
    /**
     *
     */
    protected List<Land> m_Lands = new ArrayList<Land>();

    /**
     * contstructor voor het aanmaken van een nieuw continent.
     * @param continentid
     * @param name
     * @param bonus
     */
    public Continent(int continentid, String name, int bonus)
    {
        m_Id = continentid;
        m_Name = name;
        m_BonusValue = bonus;
    }

    /**
     * Geeft de lijst met landen terug
     * @return landen
     */
    public List<Land> getLands()
    {
        return m_Lands;
    }

    /**
     * geeft de naam van het continent terug
     * @return naam van het continent
     */
    public String getName()
    {
        //TODO: unused
        return m_Name;
    }

    /**
     *
     * @return
     */
    public int getId()
    {
        return m_Id;
    }

    /**
     *
     * @return
     */
    public int getBonusValue()
    {
        return m_BonusValue;
    }

    /**
     * vraagt de eigenaar op van dit continent (als deze er is)
     * deze methode heeft als doel om te kijken of er iemand is die het
     * gehele continent in bezit heeft.
     * @return 
     */
    public ISession getOwner()
    {
        ISession owner = m_Lands.get(0).getOwner();
        if (owner != null)
        {
            Iterator<Land> it = m_Lands.iterator();
            while (it.hasNext())
            {
                // Controleer bezetter
                if (it.next().getOwner() != owner)
                    return null;
            }
        }
        return owner;
    }
    
    /**
     * 
     * @param id
     * @return
     */
    public Land getLand(int id)
    {
        Iterator<Land> it = m_Lands.iterator();
        while (it.hasNext())
        {
            Land l = it.next();
            if (l.getId() == id)
                return l;
        }
        return null;
    }
}
